home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3 / librw / RWCString.z / RWCString
Encoding:
Text File  |  1998-10-30  |  75.8 KB  |  1,189 lines

  1.  
  2.  
  3.  
  4. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  5.  
  6.  
  7.  
  8. NNNNaaaammmmeeee
  9.      RWCString - Rogue Wave library class
  10.  
  11. SSSSyyyynnnnooooppppssssiiiissss
  12.               #include <rw/cstring.h>
  13.  
  14.  
  15.  
  16.               RWCString a;
  17.  
  18.  
  19.  
  20.  
  21. DDDDeeeessssccccrrrriiiippppttttiiiioooonnnn
  22.      Class RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg offers very powerful and convenient facilities for
  23.      manipulating strings that are just as efficient as the familiar standard
  24.      C <<<<ssssttttrrrriiiinnnngggg....hhhh>>>> functions.  Although the class is primarily intended to be
  25.      used to handle single-byte character sets (SBCS; such as ASCII or ISO
  26.      Latin-1), with care it can be used to handle multibyte character sets
  27.      (MBCS).  There are two things that must be kept in mind when working with
  28.      MBCS:
  29.           Because characters can be more than one byte long, the number of
  30.           bytes in a string can, in general, be greater than the number of
  31.           characters in the string.  Use function RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::lllleeeennnnggggtttthhhh(((()))) to get
  32.           the number of bytes in a string, function RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::mmmmbbbbLLLLeeeennnnggggtttthhhh(((()))) to
  33.           get the number of characters.  Note that the latter is much slower
  34.           because it must determine the number of bytes in every character.
  35.           Hence, if the string is known to be nothing but SBCS, then
  36.           RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::lllleeeennnnggggtttthhhh(((()))) is much to be preferred.
  37.  
  38.           One or more bytes of a multibyte character can be zero.  Hence, MBCS
  39.           cannot be counted on being null terminated.  In practice, it is a
  40.           rare MBCS that uses embedded nulls.  Nevertheless, you should be
  41.           aware of this and program defensively.  In any case, class RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg
  42.           can handle embedded nulls.
  43.  
  44.      Parameters of type "ccccoooonnnnsssstttt cccchhhhaaaarrrr****" must not be passed a value of zero.
  45.      This is detected in the debug version of the library.  The class is
  46.      implemented using a technique called ccccooooppppyyyy oooonnnn wwwwrrrriiiitttteeee.  With this technique,
  47.      the copy constructor and assignment operators still reference the old
  48.      object and hence are very fast.  An actual copy is made only when a
  49.      "write" is performed, that is if the object is about to be changed.  The
  50.      net result is excellent performance, but with easy-to-understand copy
  51.      semantics.  A separate class RRRRWWWWCCCCSSSSuuuubbbbSSSSttttrrrriiiinnnngggg supports substring extraction
  52.      and modification operations.
  53.  
  54. PPPPeeeerrrrssssiiiisssstttteeeennnncccceeee
  55.      Simple
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  71.  
  72.  
  73.  
  74. Example
  75.               #include <rw/re.h>
  76.           #include <rw/rstream.h>
  77.           main(){
  78.             RWCString a("There is no joy in Beantown.");
  79.             cout << a << endl << "becomes...." << endl;
  80.             RWCRExpr re("[A-Z][a-z]*town");  // Any capitalized "town"
  81.             a.replace(re, "Redmond");
  82.             cout << a << endl;
  83.           }
  84.  
  85.  
  86.      PPPPrrrrooooggggrrrraaaammmm oooouuuuttttppppuuuutttt::::
  87.  
  88.               There is no joy in Redmond.
  89.  
  90.  
  91.  
  92. EEEEnnnnuuuummmmeeeerrrraaaattttiiiioooonnnnssss
  93.               enum RWCString::caseCompare { exact, ignoreCase }
  94.  
  95.  
  96.      Used to specify whether comparisons, searches, and hashing functions
  97.      should use case sensitive (eeeexxxxaaaacccctttt) or case-insensitive (iiiiggggnnnnoooorrrreeeeCCCCaaaasssseeee)
  98.      semantics.
  99.  
  100.               enum RWCString::scopeType { one, all }
  101.  
  102.  
  103.      Used to specify whether regular expression rrrreeeeppppllllaaaacccceeee replaces the first oooonnnneeee
  104.      substring matched by the regular expression or replaces aaaallllllll substrings
  105.      matched by the regular expression.
  106.  
  107. PPPPuuuubbbblllliiiicccc CCCCoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
  108.               RWCString();
  109.  
  110.  
  111.      Creates a string of length zero (the null string).
  112.  
  113.               RWCString(const char* cs);
  114.  
  115.  
  116.      Conversion from the null-terminated character string ccccssss.  The created
  117.      string will ccccooooppppyyyy the data pointed to by ccccssss, up to the first terminating
  118.      null.  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss  ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd
  119.      nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  120.  
  121.               RWCString(const char* cs, size_t N);
  122.  
  123.  
  124.      Constructs a string from the character string ccccssss.  The created string
  125.      will ccccooooppppyyyy the data pointed to by ccccssss.  Exactly NNNN bytes are copied,
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  137.  
  138.  
  139.  
  140.      iiiinnnncccclllluuuuddddiiiinnnngggg aaaannnnyyyy eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss.  Hence, the buffer pointed to by ccccssss must be
  141.      at least NNNN bytes long.
  142.  
  143.               RWCString(RWSize_T ic);
  144.  
  145.  
  146.      Creates a string of length zero (the null string).  The string's ccccaaaappppaaaacccciiiittttyyyy
  147.      (that is, the size it can grow to without resizing) is given by the
  148.      parameter iiiicccc.  We recommend creating an RRRRWWWWSSSSiiiizzzzeeee____TTTT value from a numerical
  149.      constant to pass into this constructor.  While RRRRWWWWSSSSiiiizzzzeeee____TTTT knows how to
  150.      convert size_t's to itself, conforming compilers will chose the
  151.      conversion to char instead.
  152.  
  153.               RWCString(const RWCString& str);
  154.  
  155.  
  156.      Copy constructor.  The created string will ccccooooppppyyyy ssssttttrrrr's data.
  157.  
  158.               RWCString(const RWCSubString& ss);
  159.  
  160.  
  161.      Conversion from sub-string.  The created string will ccccooooppppyyyy the substring
  162.      represented by ssssssss.
  163.  
  164.               RWCString(char c);
  165.  
  166.  
  167.      Constructs a string containing the single character cccc.
  168.  
  169.               RWCString(char c, size_t N);
  170.  
  171.  
  172.      Constructs a string containing the character cccc repeated NNNN times.
  173.  
  174. TTTTyyyyppppeeee CCCCoooonnnnvvvveeeerrrrssssiiiioooonnnn
  175.               operator
  176.           ccccoooonnnnsssstttt cccchhhhaaaarrrr****() const;
  177.  
  178.  
  179.      Access to the RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg's data as a null terminated string.  This data is
  180.      owned by the RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg and may not be deleted or changed.  If the
  181.      RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg object itself changes or goes out of scope, the pointer value
  182.      previously returned may (will!) become invalid.  While the string is
  183.      null-terminated, note that its lllleeeennnnggggtttthhhh is still given by the member
  184.      function lllleeeennnnggggtttthhhh(((()))).  That is, it may contain embedded nulls.
  185.  
  186. AAAAssssssssiiiiggggnnnnmmmmeeeennnntttt OOOOppppeeeerrrraaaattttoooorrrrssss
  187.               RWCString&
  188.           ooooppppeeeerrrraaaattttoooorrrr====(const char* cs);
  189.  
  190.  
  191.      Assignment operator.  Copies the null-terminated character string pointed
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  203.  
  204.  
  205.  
  206.      to by ccccssss into self.  Returns a reference to self. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss
  207.      iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee
  208.      iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  209.  
  210.               RWCString&
  211.           ooooppppeeeerrrraaaattttoooorrrr====(const RWCString& str);
  212.  
  213.  
  214.      Assignment operator.  The string will ccccooooppppyyyy ssssttttrrrr's data.  Returns a
  215.      reference to self.
  216.  
  217.               RWCString&
  218.           ooooppppeeeerrrraaaattttoooorrrr++++====(const char* cs);
  219.  
  220.  
  221.      Append the null-terminated character string pointed to by ccccssss to self.
  222.      Returns a reference to self. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss
  223.      ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss
  224.      MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  225.  
  226.               RWCString&
  227.           ooooppppeeeerrrraaaattttoooorrrr++++====(const RWCString& str);
  228.  
  229.  
  230.      Append the string ssssttttrrrr to self.  Returns a reference to self.
  231.  
  232. IIIInnnnddddeeeexxxxiiiinnnngggg OOOOppppeeeerrrraaaattttoooorrrrssss
  233.               char&
  234.           ooooppppeeeerrrraaaattttoooorrrr[[[[]]]](size_t i);
  235.           char
  236.           ooooppppeeeerrrraaaattttoooorrrr[[[[]]]](size_t i) const;
  237.  
  238.  
  239.      Return the iiiith byte.  The first variant can be used as an lvalue.  The
  240.      index iiii must be between 0 and the length of the string less one.  Bounds
  241.      checking is performed -- if the index is out of range then an exceptionof
  242.      type RRRRWWWWBBBBoooouuuunnnnddddssssEEEErrrrrrrr will occur.
  243.  
  244.               char&
  245.           ooooppppeeeerrrraaaattttoooorrrr(((())))(size_t i);
  246.           char
  247.           ooooppppeeeerrrraaaattttoooorrrr(((())))(size_t i) const;
  248.  
  249.  
  250.      Return the iiiith byte.  The first variant can be used as an lvalue.  The
  251.      index iiii must be between 0 and the length of the string less one.  Bounds
  252.      checking is performed if the pre-processor macro RRRRWWWWBBBBOOOOUUUUNNNNDDDDSSSS____CCCCHHHHEEEECCCCKKKK has been
  253.      defined before including <<<<rrrrwwww////ccccssssttttrrrriiiinnnngggg....hhhh>>>>....  In this case, if the index is
  254.      out of range, then an exception of type RRRRWWWWBBBBoooouuuunnnnddddssssEEEErrrrrrrr will occur.
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  269.  
  270.  
  271.  
  272.               RWCSubString
  273.           ooooppppeeeerrrraaaattttoooorrrr(((())))(size_t start, size_t len);
  274.           const RWCSubString
  275.           ooooppppeeeerrrraaaattttoooorrrr(((())))(size_t start, size_t len) const;
  276.  
  277.  
  278.      Substring operator.  Returns an RRRRWWWWCCCCSSSSuuuubbbbSSSSttttrrrriiiinnnngggg of self with length lllleeeennnn,
  279.      starting at index ssssttttaaaarrrrtttt.  The first variant can be used as an lvalue.
  280.      The sum of ssssttttaaaarrrrtttt plus lllleeeennnn must be less than or equal to the string
  281.      length.  If the library was built using the RRRRWWWWDDDDEEEEBBBBUUUUGGGG flag, and ssssttttaaaarrrrtttt and
  282.      lllleeeennnn are out of range, then an exception of type RRRRWWWWBBBBoooouuuunnnnddddssssEEEErrrrrrrr will occur.
  283.  
  284.               RWCSubString
  285.           ooooppppeeeerrrraaaattttoooorrrr(((())))(const RWCRExpr& re, size_t start=0);
  286.           const RWCSubString
  287.           ooooppppeeeerrrraaaattttoooorrrr(((())))(const RWCRExpr& re, size_t start=0) const;
  288.           RWCSubString
  289.           ooooppppeeeerrrraaaattttoooorrrr(((())))(const RWCRegexp& re, size_t start=0);
  290.           const RWCSubString
  291.           ooooppppeeeerrrraaaattttoooorrrr(((())))(const RWCRegexp& re, size_t start=0) const;
  292.  
  293.  
  294.      Returns the first substring starting after index ssssttttaaaarrrrtttt that matches the
  295.      regular expression rrrreeee.  If there is no such substring, then the null
  296.      substring is returned.  The first variant can be used as an llllvvvvaaaalllluuuueeee.  Note
  297.      that if you wish to use ooooppppeeeerrrraaaattttoooorrrr(((())))((((ccccoooonnnnsssstttt RRRRWWWWCCCCRRRREEEExxxxpppprrrr&&&&............)))) you must instead
  298.      use mmmmaaaattttcccchhhh((((ccccoooonnnnsssstttt RRRRWWWWCCCCRRRREEEExxxxpppprrrr&&&&............)))) described below.  The reason for this is
  299.      that  we are presently retaining RRRRWWWWCCCCRRRReeeeggggeeeexxxxpppp but ooooppppeeeerrrraaaattttoooorrrr((((ccccoooonnnnsssstttt
  300.      RRRRWWWWCCCCRRRREEEExxxxpppprrrr&&&&............)))) and ooooppppeeeerrrraaaattttoooorrrr((((ccccoooonnnnsssstttt RRRRWWWWCCCCRRRReeeeggggeeeexxxxpppp)))) are ambiguous in the case of
  301.      RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::ooooppppeeeerrrraaaattttoooorrrr((((""""ssssttttrrrriiiinnnngggg""""))))....  In addition, operator((((ccccoooonnnnsssstttt cccchhhhaaaarrrr ****)))) and
  302.      operator(ssssiiiizzzzeeee____tttt) are ambiguous in the case of RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::ooooppppeeeerrrraaaattttoooorrrr((((0000)))).
  303.      TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyybbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss
  304.      ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  305.  
  306. PPPPuuuubbbblllliiiicccc MMMMeeeemmmmbbbbeeeerrrr FFFFuuuunnnnccccttttiiiioooonnnnssss
  307.               RWCString&
  308.           aaaappppppppeeeennnndddd(const char* cs);
  309.  
  310.  
  311.      Append a copy of the null-terminated character string pointed to by ccccssss to
  312.      self.  Returns a reference to self. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss
  313.      ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss
  314.      MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  315.  
  316.               RWCString&
  317.           aaaappppppppeeeennnndddd(const char* cs, size_t N);
  318.  
  319.  
  320.      Append a copy of the character string ccccssss to self.  Exactly NNNN bytes are
  321.      copied, iiiinnnncccclllluuuuddddiiiinnnngggg aaaannnnyyyy eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss.  Hence, the buffer pointed to by ccccssss
  322.      must be at least NNNN bytes long.  Returns a reference to self.
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  335.  
  336.  
  337.  
  338.               RWCString&
  339.           aaaappppppppeeeennnndddd(char c, size_t N);
  340.  
  341.  
  342.      Append NNNN copies of the character cccc to self.  Returns a reference to self.
  343.  
  344.               RWCString&
  345.           aaaappppppppeeeennnndddd(const RWCString& cstr);
  346.  
  347.  
  348.      Append a copy of the string ccccssssttttrrrr to self.  Returns a reference to self.
  349.  
  350.               RWCString&
  351.           aaaappppppppeeeennnndddd(const RWCString& cstr, size_t N);
  352.  
  353.  
  354.      Append the first NNNN bytes or the length of ccccssssttttrrrr (whichever is less) of
  355.      ccccssssttttrrrr to self.  Returns a reference to self.
  356.  
  357.               size_t
  358.           bbbbiiiinnnnaaaarrrryyyySSSSttttoooorrrreeeeSSSSiiiizzzzeeee() const;
  359.  
  360.  
  361.      Returns the number of bytes necessary to store the object using the
  362.      global function:
  363.  
  364.               RWFile& operator<<(RWFile&, const RWCString&);
  365.  
  366.  
  367.  
  368.               size_t
  369.           ccccaaaappppaaaacccciiiittttyyyy() const;
  370.  
  371.  
  372.      Return the current capacity of self.  This is the number of bytes the
  373.      string can hold without resizing.
  374.  
  375.               size_t
  376.           ccccaaaappppaaaacccciiiittttyyyy(size_t capac);
  377.  
  378.  
  379.      Hint to the implementation to change the capacity of self to ccccaaaappppaaaacccc.
  380.      Returns the actual capacity.
  381.  
  382.               int
  383.           ccccoooollllllllaaaatttteeee(const char* str) const;
  384.           int
  385.           ccccoooollllllllaaaatttteeee(const RWCString& str) const;
  386.  
  387.  
  388.      Returns an iiiinnnntttt less then, greater than, or equal to zero, according to
  389.      the result of calling the standard C library function ::::::::ssssttttrrrrccccoooollllllll(((()))) on self
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  401.  
  402.  
  403.  
  404.      and the argument ssssttttrrrr.  This supports locale-dependent collation.
  405.      Provided only on platforms that provide ::::::::ssssttttrrrrccccoooollllllll(((()))).  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss
  406.      iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....
  407.  
  408.               int
  409.           ccccoooommmmppppaaaarrrreeeeTTTToooo(const char* str, caseCompare = RWCString::exact) const;
  410.           int
  411.           ccccoooommmmppppaaaarrrreeeeTTTToooo(const RWCString& str,
  412.                     caseCompare = RWCString::exact) const;
  413.  
  414.  
  415.      Returns an iiiinnnntttt less than, greater than, or equal to zero, according to
  416.      the result of calling the standard C library function mmmmeeeemmmmccccmmmmpppp(((()))) on self
  417.      and the argument ssssttttrrrr.  Case sensitivity is according to the caseCompare
  418.      argument, and may be RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::eeeexxxxaaaacccctttt or RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::iiiiggggnnnnoooorrrreeeeCCCCaaaasssseeee. If
  419.      ccccaaaasssseeeeCCCCoooommmmppppaaaarrrreeee is RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::eeeexxxxaaaacccctttt, then this function works for all string
  420.      types....  OOOOtttthhhheeeerrrrwwwwiiiisssseeee,,,, tttthhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss.... Thhhhiiiissss
  421.      ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccoooonnnnsssstttt cccchhhhaaaarrrr**** ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....
  422.      TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccoooonnnnsssstttt cccchhhhaaaarrrr**** MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  423.  
  424.               RWBoolean
  425.           ccccoooonnnnttttaaaaiiiinnnnssss(const char* str, caseCompare = RWCString::exact)
  426.                    const;
  427.           RWBoolean
  428.           ccccoooonnnnttttaaaaiiiinnnnssss(const RWCString& cs,
  429.                    caseCompare = RWCString::exact) const;
  430.  
  431.  
  432.      Pattern matching.  Returns TTTTRRRRUUUUEEEE if ssssttttrrrr occurs in sssseeeellllffff.  Case sensitivity
  433.      is according to the ccccaaaasssseeeeCCCCoooommmmppppaaaarrrreeee argument, and may be RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::eeeexxxxaaaacccctttt or
  434.      RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::iiiiggggnnnnoooorrrreeeeCCCCaaaasssseeee. If ccccaaaasssseeeeCCCCoooommmmppppaaaarrrreeee is RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::eeeexxxxaaaacccctttt, then this
  435.      function works for all string types....  OOOOtttthhhheeeerrrrwwwwiiiisssseeee,,,, tttthhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss
  436.      iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss.... Thhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccoooonnnnsssstttt
  437.      cccchhhhaaaarrrr**** ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss.... TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh
  438.      ccccoooonnnnsssstttt cccchhhhaaaarrrr**** MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  439.  
  440.               const char*
  441.           ddddaaaattttaaaa() const;
  442.  
  443.  
  444.      Access to the RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg's data as a null terminated string.  This datum
  445.      is owned by the RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg and may not be deleted or changed.  If the
  446.      RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg object itself changes or goes out of scope, the pointer value
  447.      previously returned will become invalid.  While the string is null
  448.      terminated, note that its lllleeeennnnggggtttthhhh is still given by the member function
  449.      lllleeeennnnggggtttthhhh(((()))).  That is, it may contain embedded nulls.
  450.  
  451.               size_t
  452.           ffffiiiirrrrsssstttt(char c) const;
  453.  
  454.  
  455.      Returns the index of the first occurence of the character cccc in self.
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  467.  
  468.  
  469.  
  470.      Returns RRRRWWWW____NNNNPPPPOOOOSSSS if there is no such character or if there is an embedded
  471.      null prior to finding cccc. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh
  472.      eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  473.  
  474.               size_t
  475.           ffffiiiirrrrsssstttt(char c, size_t) const;
  476.  
  477.  
  478.      Returns the index of the first occurence of the character cccc in self.
  479.      Continues to search past embedded nulls.  Returns RRRRWWWW____NNNNPPPPOOOOSSSS if there is no
  480.      such character. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  481.  
  482.               size_t
  483.           ffffiiiirrrrsssstttt(const char* str) const;
  484.  
  485.  
  486.      Returns the index of the first occurence in self of any character in ssssttttrrrr.
  487.      Returns RRRRWWWW____NNNNPPPPOOOOSSSS if there is no match or if there is an embedded null
  488.      prior to finding any character from ssssttttrrrr. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee
  489.      wwwwiiiitttthhhh ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh
  490.      MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  491.  
  492.               size_t
  493.           ffffiiiirrrrsssstttt(const char* str, size_t N) const;
  494.  
  495.  
  496.      Returns the index of the first occurence in self of any character in ssssttttrrrr.
  497.      Exactly NNNN bytes in ssssttttrrrr are checked iiiinnnncccclllluuuuddddiiiinnnngggg aaaannnnyyyy eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss so ssssttttrrrr
  498.      must point to a buffer containing at least NNNN  bytes.  Returns RRRRWWWW____NNNNPPPPOOOOSSSS if
  499.      there is no match.
  500.  
  501.               unsigned
  502.           hhhhaaaasssshhhh(caseCompare = RWCString::exact) const;
  503.  
  504.  
  505.      Returns a suitable hash value. IIIIffff ccccaaaasssseeeeCCCCoooommmmppppaaaarrrreeee iiiissss RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::iiiiggggnnnnoooorrrreeeeCCCCaaaasssseeee
  506.      tttthhhheeeennnn tttthhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn wwwwiiiillllllll bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  507.  
  508.               size_t
  509.           iiiinnnnddddeeeexxxx(const char* pat,size_t i=0,
  510.                 caseCompare = RWCString::exact) const;
  511.           size_t
  512.           iiiinnnnddddeeeexxxx(const RWCString& pat,size_t i=0,
  513.                 caseCompare = RWCString::exact) const;
  514.  
  515.  
  516.      Pattern matching.  Starting with index iiii, searches for the first
  517.      occurrence of ppppaaaatttt in self and returns the index of the start of the
  518.      match.  Returns RRRRWWWW____NNNNPPPPOOOOSSSS if there is no such pattern.  Case sensitivity is
  519.      according to the ccccaaaasssseeeeCCCCoooommmmppppaaaarrrreeee argument; it defaults to RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::eeeexxxxaaaacccctttt.
  520.      If ccccaaaasssseeeeCCCCoooommmmppppaaaarrrreeee is RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::eeeexxxxaaaacccctttt, then this function works for all
  521.      string types....  OOOOtttthhhheeeerrrrwwwwiiiisssseeee,,,, tttthhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  533.  
  534.  
  535.  
  536.      ssssttttrrrriiiinnnnggggssss....
  537.  
  538.               size_t
  539.           iiiinnnnddddeeeexxxx(const char* pat, size_t patlen,size_t i,
  540.                 caseCompare cmp) const;
  541.           size_t
  542.           iiiinnnnddddeeeexxxx(const RWCString& pat, size_t patlen,size_t i,
  543.                 caseCompare cmp) const;
  544.  
  545.  
  546.      Pattern matching.  Starting with index iiii, searches for the first
  547.      occurrence of the first ppppaaaattttlllleeeennnn bytes from ppppaaaatttt in self and returns the
  548.      index of the start of the match.  Returns RRRRWWWW____NNNNPPPPOOOOSSSS if there is no such
  549.      pattern.  Case sensitivity is according to the ccccaaaasssseeeeCCCCoooommmmppppaaaarrrreeee argument. If
  550.      ccccaaaasssseeeeCCCCoooommmmppppaaaarrrreeee is RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::eeeexxxxaaaacccctttt, then this function works for all string
  551.      types....  OOOOtttthhhheeeerrrrwwwwiiiisssseeee,,,, tttthhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  552.  
  553.               size_t
  554.           iiiinnnnddddeeeexxxx(const RWCRExpr& re, size_t i=0) const;
  555.           size_t
  556.           iiiinnnnddddeeeexxxx(const RWCRegexp& re, size_t i=0) const;
  557.  
  558.  
  559.      Regular expression matching.  Returns the index greater than or equal to
  560.      iiii of the start of the first pattern that matches the regular expression
  561.      rrrreeee.  Returns RRRRWWWW____NNNNPPPPOOOOSSSS if there is no such pattern. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss
  562.      iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  563.  
  564.               size_t
  565.           iiiinnnnddddeeeexxxx(const RWCRExpr& re,size_t* ext,size_t i=0) const;
  566.           size_t
  567.           iiiinnnnddddeeeexxxx(const RWCRegexp& re,size_t* ext,size_t i=0) const;
  568.  
  569.  
  570.      Regular expression matching.  Returns the index greater than or equal to
  571.      i of the start of the first pattern that matches the regular expression
  572.      rrrreeee.  Returns RRRRWWWW____NNNNPPPPOOOOSSSS if there is no such pattern.  The length of the
  573.      matching pattern is returned in the variable pointed to by eeeexxxxtttt. TTTThhhhiiiissss
  574.      ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn
  575.      mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  576.  
  577.               RWCString&
  578.           iiiinnnnsssseeeerrrrtttt(size_t pos, const char* cs);
  579.  
  580.  
  581.      Insert a copy of the null-terminated string ccccssss into self at byte position
  582.      ppppoooossss, thus expanding the string.  Returns a reference to self. TTTThhhhiiiissss
  583.      ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss
  584.      ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  599.  
  600.  
  601.  
  602.               RWCString&
  603.           iiiinnnnsssseeeerrrrtttt(size_t pos, const char* cs, size_t N);
  604.  
  605.  
  606.      Insert a copy of the first NNNN bytes of ccccssss into self at byte position ppppoooossss,
  607.      thus expanding the string.  Exactly NNNN bytes are copied, iiiinnnncccclllluuuuddddiiiinnnngggg aaaannnnyyyy
  608.      eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss.  Hence, the buffer pointed to by ccccssss must be at least NNNN
  609.      bytes long.  Returns a reference to self.
  610.  
  611.               RWCString&
  612.           iiiinnnnsssseeeerrrrtttt(size_t pos, const RWCString& str);
  613.  
  614.  
  615.      Insert a copy of the string ssssttttrrrr into self at byte position ppppoooossss.  Returns
  616.      a reference to self.
  617.  
  618.               RWCString&
  619.           iiiinnnnsssseeeerrrrtttt(size_t pos, const RWCString& str, size_t N);
  620.  
  621.  
  622.      Insert a copy of the first NNNN bytes or the length of ssssttttrrrr (whichever is
  623.      less) of ssssttttrrrr into self at byte position ppppoooossss.  Returns a reference to
  624.      self.
  625.  
  626.               RWBoolean
  627.           iiiissssAAAAsssscccciiiiiiii() const;
  628.  
  629.  
  630.      Returns TTTTRRRRUUUUEEEE if self contains no bytes with the high bit set.
  631.  
  632.               RWBoolean
  633.           iiiissssNNNNuuuullllllll() const;
  634.  
  635.  
  636.      Returns TTTTRRRRUUUUEEEE if this is a zero lengthed string (iiii....eeee...., the null string).
  637.  
  638.               size_t
  639.           llllaaaasssstttt(char c) const;
  640.  
  641.  
  642.      Returns the index of the last occurrence in the string of the character
  643.      cccc.  Returns RRRRWWWW____NNNNPPPPOOOOSSSS if there is no such character or if there is an
  644.      embedded null to the right of cccc in self. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee
  645.      wwwwiiiitttthhhh ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh
  646.      MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  647.  
  648.               size_t
  649.           llllaaaasssstttt(char c, size_t N) const;
  650.  
  651.  
  652.      Returns the index of the last occurrence in the string of the character
  653.      cccc.  Continues to search past embedded nulls.  Returns RRRRWWWW____NNNNPPPPOOOOSSSS if there is
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  665.  
  666.  
  667.  
  668.      no such character. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  669.  
  670.               size_t
  671.           lllleeeennnnggggtttthhhh() const;
  672.  
  673.  
  674.      Return the number of bytes in self.  NNNNooootttteeee tttthhhhaaaatttt iiiiffff sssseeeellllffff ccccoooonnnnttttaaaaiiiinnnnssss mmmmuuuullllttttiiiibbbbyyyytttteeee
  675.      cccchhhhaaaarrrraaaacccctttteeeerrrrssss,,,, tttthhhheeeennnn tttthhhhiiiissss wwwwiiiillllllll nnnnooootttt bbbbeeee tttthhhheeee nnnnuuuummmmbbbbeeeerrrr ooooffff cccchhhhaaaarrrraaaacccctttteeeerrrrssss....
  676.  
  677.               RWCSubString
  678.           mmmmaaaattttcccchhhh(const RWCRExpr& re, size_t start=0);
  679.           const RWCSubString
  680.           mmmmaaaattttcccchhhh(const RWCRExpr& re, size_t start=0) const;
  681.  
  682.  
  683.      Returns the first substring starting after index ssssttttaaaarrrrtttt that matches the
  684.      regular expression rrrreeee.  If there is no such substring, then the null
  685.      substring is returned.  The first variant can be used as an lvalue.  Note
  686.      that this is used in place of ooooppppeeeerrrraaaattttoooorrrr(((())))((((ccccoooonnnnsssstttt RRRRWWWWCCCCRRRReeeeggggeeeexxxxpppp&&&&............)))) if you want
  687.      to use extended regular expressions.
  688.  
  689.               size_t
  690.           mmmmbbbbLLLLeeeennnnggggtttthhhh() const;
  691.  
  692.  
  693.      Return the number of multibyte characters in self, according to the
  694.      Standard C function ::::::::mmmmbbbblllleeeennnn(((()))).  Returns RRRRWWWW____NNNNPPPPOOOOSSSS if a bad character is
  695.      encountered.  Note that, in general, mmmmbbbbLLLLeeeennnnggggtttthhhh(((()))) _ lllleeeennnnggggtttthhhh(((()))).  Provided
  696.      only on platforms that provide ::::::::mmmmbbbblllleeeennnn(((()))).
  697.  
  698.               RWCString&
  699.           pppprrrreeeeppppeeeennnndddd(const char* cs);
  700.  
  701.  
  702.      Prepend a copy of the null-terminated character string pointed to by ccccssss
  703.      to self.  Returns a reference to self. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh
  704.      ccccssss ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh
  705.      ccccssss MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  706.  
  707.               RWCString&
  708.           pppprrrreeeeppppeeeennnndddd(const char* cs, size_t N);
  709.  
  710.  
  711.      Prepend a copy of the character string ccccssss to self.  Exactly NNNN bytes are
  712.      copied, iiiinnnncccclllluuuuddddiiiinnnngggg aaaannnnyyyy eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss.  Hence, the buffer pointed to by ccccssss
  713.      must be at least NNNN bytes long.  Returns a reference to self.
  714.  
  715.               RWCString&
  716.           pppprrrreeeeppppeeeennnndddd(char c, size_t N);
  717.  
  718.  
  719.      Prepend NNNN copies of character cccc to self. Returns a reference to self.
  720.  
  721.  
  722.  
  723.                                                                        PPPPaaaaggggeeee 11111111
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  731.  
  732.  
  733.  
  734.               RWCString&
  735.           pppprrrreeeeppppeeeennnndddd(const RWCString& str);
  736.  
  737.  
  738.      Prepends a copy of the string ssssttttrrrr to self.  Returns a reference to self.
  739.  
  740.               RWCString&
  741.           pppprrrreeeeppppeeeennnndddd(const RWCString& cstr, size_t N);
  742.  
  743.  
  744.      Prepend the first NNNN bytes or the length of ccccssssttttrrrr (whichever is less) of
  745.      ccccssssttttrrrr to self.  Returns a reference to self.
  746.  
  747.               istream&
  748.           rrrreeeeaaaaddddFFFFiiiilllleeee(istream& s);
  749.  
  750.  
  751.      Reads characters from the input stream ssss, replacing the previous contents
  752.      of self, until EEEEOOOOFFFF is reached.  Null characters are treated the same as
  753.      other characters.
  754.  
  755.               istream&
  756.           rrrreeeeaaaaddddLLLLiiiinnnneeee(istream& s, RWBoolean skipWhite = TRUE);
  757.  
  758.  
  759.      Reads characters from the input stream ssss, replacing the previous contents
  760.      of self, until a newline (or an EEEEOOOOFFFF) is encountered. The newline is
  761.      removed from the input stream but is not stored.  Null characters are
  762.      treated the same as other characters.  If the sssskkkkiiiippppWWWWhhhhiiiitttteeee argument is TTTTRRRRUUUUEEEE,
  763.      then whitespace is skipped (using the iostream library manipulator wwwwssss)
  764.      before saving characters.
  765.  
  766.               istream&
  767.           rrrreeeeaaaaddddSSSSttttrrrriiiinnnngggg(istream& s);
  768.  
  769.  
  770.      Reads characters from the input stream ssss, replacing the previous contents
  771.      of self, until an EEEEOOOOFFFF or null terminator is encountered.  If the number
  772.      of bytes remaining in the stream is large, you should resize the
  773.      RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg to approximately the number of bytes to be read prior to using
  774.      this method.  See "Implementation Details" in the User's Guide for more
  775.      information. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd
  776.      nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  777.  
  778.               istream&
  779.           rrrreeeeaaaaddddTTTTooooDDDDeeeelllliiiimmmm(istream& s, char delim='0);
  780.  
  781.  
  782.      Reads characters from the input stream ssss, replacing the previous contents
  783.      of self, until an EEEEOOOOFFFF or the delimiting character ddddeeeelllliiiimmmm is encountered.
  784.      The delimiter is removed from the input stream but is not stored.  Null
  785.      characters are treated the same as other characters. IIIIffff ddddeeeelllliiiimmmm iiiissss '''' '''' tttthhhheeeennnn
  786.  
  787.  
  788.  
  789.                                                                        PPPPaaaaggggeeee 11112222
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  797.  
  798.  
  799.  
  800.      tttthhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss.... IIIIffff ddddeeeelllliiiimmmm
  801.      iiiissss '''' '''' tttthhhheeeennnn tttthhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  802.  
  803.               istream&
  804.           rrrreeeeaaaaddddTTTTooookkkkeeeennnn(istream& s);
  805.  
  806.  
  807.      Whitespace is skipped before saving characters. Characters are then read
  808.      from the input stream ssss, replacing previous contents of self, until
  809.      trailing whitespace or an EEEEOOOOFFFF is encountered. The whitespace is left on
  810.      the input stream.  Null characters are treated the same as other
  811.      characters.  Whitespace is identified by the standard C library function
  812.      iiiissssssssppppaaaacccceeee(((()))).  Thhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  813.  
  814.               RWCString&
  815.           rrrreeeemmmmoooovvvveeee(size_t pos);
  816.  
  817.  
  818.      Removes the bytes from the byte position ppppoooossss, which must be no greater
  819.      than lllleeeennnnggggtttthhhh(((()))), to the end of string.  Returns a reference to self.
  820.  
  821.               RWCString&
  822.           rrrreeeemmmmoooovvvveeee(size_t pos, size_t N);
  823.  
  824.  
  825.      Removes NNNN bytes or to the end of string (whichever comes first) starting
  826.      at the byte position ppppoooossss, which must be no greater than lllleeeennnnggggtttthhhh(((()))).
  827.      Returns a reference to self.
  828.  
  829.               RWCString&
  830.           rrrreeeeppppllllaaaacccceeee(size_t pos, size_t N, const char* cs);
  831.  
  832.  
  833.      Replaces NNNN bytes or to the end of string (whichever comes first) starting
  834.      at byte position ppppoooossss, which must be no greater than lllleeeennnnggggtttthhhh(((()))), with a copy
  835.      of the null-terminated string ccccssss.  Returns a reference to self. Thhhhiiiissss
  836.      ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss
  837.      ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  838.  
  839.               RWCString&
  840.           rrrreeeeppppllllaaaacccceeee(size_t pos, size_t N1,const char* cs, size_t N2);
  841.  
  842.  
  843.      Replaces NNNN1111 bytes or to the end of string (whichever comes first)
  844.      starting at byte position ppppoooossss, which must be no greater than lllleeeennnnggggtttthhhh(((()))),
  845.      with a copy of the string ccccssss.  Exactly NNNN2222 bytes are copied, iiiinnnncccclllluuuuddddiiiinnnngggg aaaannnnyyyy
  846.      eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss.  Hence, the buffer pointed to by ccccssss must be at least NNNN2222
  847.      bytes long.  Returns a reference to self.
  848.  
  849.               RWCString&
  850.           rrrreeeeppppllllaaaacccceeee(size_t pos, size_t N, const RWCString& str);
  851.  
  852.  
  853.  
  854.  
  855.                                                                        PPPPaaaaggggeeee 11113333
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  863.  
  864.  
  865.  
  866.      Replaces NNNN bytes or to the end of string (whichever comes first) starting
  867.      at byte position ppppoooossss, which must be no greater than lllleeeennnnggggtttthhhh(((()))), with a copy
  868.      of the string ssssttttrrrr.  Returns a reference to self.
  869.  
  870.               RWCString&
  871.           rrrreeeeppppllllaaaacccceeee(size_t pos, size_t N1,const RWCString& str, size_t N2);
  872.  
  873.  
  874.      Replaces NNNN1111 bytes or to the end of string (whichever comes first)
  875.      starting at position ppppoooossss, which must be no greater than lllleeeennnnggggtttthhhh(((()))), with a
  876.      copy of the first NNNN2222 bytes, or the length of ssssttttrrrr (whichever is less),
  877.      from ssssttttrrrr.  Returns a reference to self.
  878.  
  879.               rrrreeeeppppllllaaaacccceeee(const RWCRExpr& pattern, const char* replacement,
  880.                   scopeType scope=one);
  881.           rrrreeeeppppllllaaaacccceeee(const RWCRExpr& pattern,
  882.                   const RWCString& replacement,scopeType scope=one);
  883.  
  884.  
  885.      Replaces substring matched by ppppaaaatttttttteeeerrrrnnnn with replacement string.   ppppaaaatttttttteeeerrrrnnnn
  886.      is the new extended regular expression.  ssssccccooooppppeeee is one of {oooonnnneeee, aaaallllllll} and
  887.      controls whether all matches of pattern are replaced with rrrreeeeppppllllaaaacccceeeemmmmeeeennnntttt or
  888.      just the first one match is replaced.  rrrreeeeppppllllaaaacccceeeemmmmeeeennnntttt is the replacement
  889.      pattern for the string.  Here's an example:
  890.  
  891.               RWCString s("hahahohoheehee");
  892.  
  893.  
  894.  
  895.               s.replace(RWCRExpr("(ho)+","HAR"); // s == "hahaHARheehee"
  896.  
  897.  
  898.      Thhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccoooonnnnsssstttt cccchhhhaaaarrrr**** rrrreeeeppppllllaaaacccceeeemmmmeeeennnntttt ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh
  899.      eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccoooonnnnsssstttt cccchhhhaaaarrrr****
  900.      rrrreeeeppppllllaaaacccceeeemmmmeeeennnntttt MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  901.  
  902.               void
  903.           rrrreeeessssiiiizzzzeeee(size_t n);
  904.  
  905.  
  906.      Changes the length of self to nnnn bytes, adding blanks or truncating as
  907.      necessary.
  908.  
  909.               RWCSubString
  910.           ssssttttrrrriiiipppp(stripType s = RWCString::trailing, char c = ' ');
  911.           const RWCSubString
  912.           ssssttttrrrriiiipppp(stripType s = RWCString::trailing, char c = ' ')
  913.           const;
  914.  
  915.  
  916.      Returns a substring of self where the character cccc has been stripped off
  917.      the beginning, end, or both ends of the string.  The first variant can be
  918.  
  919.  
  920.  
  921.                                                                        PPPPaaaaggggeeee 11114444
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  929.  
  930.  
  931.  
  932.      used as an lvalue.  The enum ssssttttrrrriiiippppTTTTyyyyppppeeee can take values:
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.      ssssttttrrrriiiippppTTTTyyyyppppeeeeMMMMeeeeaaaannnniiiinnnngggg
  940.  
  941.  
  942.      lllleeeeaaaaddddiiiinnnnggggRemove characters at beginning
  943.  
  944.  
  945.      ttttrrrraaaaiiiilllliiiinnnnggggRemove characters at end
  946.  
  947.  
  948.      bbbbooootttthhhhRemove characters at both ends
  949.  
  950.  
  951.           RWCSubString
  952.           ssssuuuubbbbSSSSttttrrrriiiinnnngggg(const char* cs, size_t start=0,
  953.                     caseCompare = RWCString::exact);
  954.           const RWCSubString
  955.           ssssuuuubbbbSSSSttttrrrriiiinnnngggg(const char* cs, size_t start=0,
  956.                     caseCompare = RWCString::exact) const;
  957.  
  958.  
  959.      Returns a substring representing the first occurence of the null-
  960.      terminated string pointed to by "ccccssss".  The first variant can be used as
  961.      an lvalue.  Case sensitivity is according to the ccccaaaasssseeeeCCCCoooommmmppppaaaarrrreeee argument; it
  962.      defaults to RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::eeeexxxxaaaacccctttt.   IIIIffff ccccaaaasssseeeeCCCCoooommmmppppaaaarrrreeee iiiissss RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::iiiiggggnnnnoooorrrreeeeCCCCaaaasssseeee
  963.      tttthhhheeeennnn tttthhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss
  964.      iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee
  965.      iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccssss MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  966.  
  967.               void
  968.           ttttooooLLLLoooowwwweeeerrrr();
  969.  
  970.  
  971.      Changes all upper-case letters in self to lower-case, using the standard
  972.      C library facilities declared in <<<<ccccttttyyyyppppeeee....hhhh>>>>.... TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee
  973.      wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  974.  
  975.               void
  976.           ttttooooUUUUppppppppeeeerrrr();
  977.  
  978.  
  979.      Changes all lower-case letters in self to upper-case, using the standard
  980.      C library facilities declared in <<<<ccccttttyyyyppppeeee....hhhh>>>>.... TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.                                                                        PPPPaaaaggggeeee 11115555
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  995.  
  996.  
  997.  
  998.      wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  999.  
  1000. SSSSttttaaaattttiiiicccc PPPPuuuubbbblllliiiicccc MMMMeeeemmmmbbbbeeeerrrr FFFFuuuunnnnccccttttiiiioooonnnnssss
  1001.               static unsigned
  1002.           hhhhaaaasssshhhh(const RWCString& str);
  1003.  
  1004.  
  1005.      Returns the hash value of ssssttttrrrr as returned by ssssttttrrrr....hhhhaaaasssshhhh((((RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::eeeexxxxaaaacccctttt)))).
  1006.  
  1007.               static size_t
  1008.           iiiinnnniiiittttiiiiaaaallllCCCCaaaappppaaaacccciiiittttyyyy(size_t ic = 15);
  1009.  
  1010.  
  1011.      Sets the minimum initial capacity of an RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg, and returns the old
  1012.      value.  The initial setting is 15 bytes. Larger values will use more
  1013.      memory, but result in fewer resizes when concatenating or reading
  1014.      strings. Smaller values will waste less memory, but result in more
  1015.      resizes.
  1016.  
  1017.               static size_t
  1018.           mmmmaaaaxxxxWWWWaaaasssstttteeee(size_t mw = 15);
  1019.  
  1020.  
  1021.      Sets the maximum amount of unused space allowed in a string should it
  1022.      shrink, and returns the old value.  The initial setting is 15 bytes.  If
  1023.      more than mmmmwwww bytes are wasted, then excess space will be reclaimed.
  1024.  
  1025.               static size_t
  1026.           rrrreeeessssiiiizzzzeeeeIIIInnnnccccrrrreeeemmmmeeeennnntttt(size_t ri = 16);
  1027.  
  1028.  
  1029.      Sets the resize increment when more memory is needed to grow a string.
  1030.      Returns the old value.  The initial setting is 16 bytes.
  1031.  
  1032. RRRReeeellllaaaatttteeeedddd GGGGlllloooobbbbaaaallll OOOOppppeeeerrrraaaattttoooorrrrssss
  1033.               RWBoolean
  1034.           ooooppppeeeerrrraaaattttoooorrrr========(const RWCString&, const char*     );
  1035.           RWBoolean
  1036.           ooooppppeeeerrrraaaattttoooorrrr========(const char*,      const RWCString&);
  1037.           RWBoolean
  1038.           ooooppppeeeerrrraaaattttoooorrrr========(const RWCString&, const RWCString&);
  1039.           RWBoolean
  1040.           ooooppppeeeerrrraaaattttoooorrrr!!!!====(const RWCString&, const char*     );
  1041.           RWBoolean
  1042.           ooooppppeeeerrrraaaattttoooorrrr!!!!====(const char*,      const RWCString&);
  1043.           RWBoolean
  1044.           ooooppppeeeerrrraaaattttoooorrrr!!!!====(const RWCString&, const RWCString&);
  1045.  
  1046.  
  1047.      Logical equality and inequality.  Case sensitivity is eeeexxxxaaaacccctttt. Thhhhiiiissss
  1048.      ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccoooonnnnsssstttt cccchhhhaaaarrrr**** ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....
  1049.      TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccoooonnnnsssstttt cccchhhhaaaarrrr**** MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  1050.  
  1051.  
  1052.  
  1053.                                                                        PPPPaaaaggggeeee 11116666
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  1061.  
  1062.  
  1063.  
  1064.               RWBoolean
  1065.           ooooppppeeeerrrraaaattttoooorrrr<<<< (const RWCString&, const char*     );
  1066.           RWBoolean
  1067.           ooooppppeeeerrrraaaattttoooorrrr<<<< (const char*,      const RWCString&);
  1068.           RWBoolean
  1069.           ooooppppeeeerrrraaaattttoooorrrr<<<< (const RWCString&, const RWCString&);
  1070.           RWBoolean
  1071.           ooooppppeeeerrrraaaattttoooorrrr>>>> (const RWCString&, const char*     );
  1072.           RWBoolean
  1073.           ooooppppeeeerrrraaaattttoooorrrr>>>> (const char*,      const RWCString&);
  1074.           RWBoolean
  1075.           ooooppppeeeerrrraaaattttoooorrrr>>>> (const RWCString&, const RWCString&);
  1076.           RWBoolean
  1077.           ooooppppeeeerrrraaaattttoooorrrr<<<<====(const RWCString&, const char*     );
  1078.           RWBoolean
  1079.           ooooppppeeeerrrraaaattttoooorrrr<<<<====(const char*,      const RWCString&);
  1080.           RWBoolean
  1081.           ooooppppeeeerrrraaaattttoooorrrr<<<<====(const RWCString&, const RWCString&);
  1082.           RWBoolean
  1083.           ooooppppeeeerrrraaaattttoooorrrr>>>>====(const RWCString&, const char*     );
  1084.           RWBoolean
  1085.           ooooppppeeeerrrraaaattttoooorrrr>>>>====(const char*,      const RWCString&);
  1086.           RWBoolean
  1087.           ooooppppeeeerrrraaaattttoooorrrr>>>>====(const RWCString&, const RWCString&);
  1088.  
  1089.  
  1090.      Comparisons are done lexicographically, byte by byte.  Case sensitivity
  1091.      is eeeexxxxaaaacccctttt.  Use member ccccoooollllllllaaaatttteeee(((()))) or ssssttttrrrrxxxxffffrrrrmmmm(((()))) for locale sensitivity. TTTThhhhiiiissss
  1092.      ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccoooonnnnsssstttt cccchhhhaaaarrrr**** ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....
  1093.      TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccoooonnnnsssstttt cccchhhhaaaarrrr**** MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  1094.  
  1095.               RWCString
  1096.           ooooppppeeeerrrraaaattttoooorrrr++++(const RWCString&, const RWCString&);
  1097.           RWCString
  1098.           ooooppppeeeerrrraaaattttoooorrrr++++(const char*,      const RWCString&);
  1099.           RWCString
  1100.           ooooppppeeeerrrraaaattttoooorrrr++++(const RWCString&, const char*     );
  1101.  
  1102.  
  1103.      Concatenation operators. TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccoooonnnnsssstttt cccchhhhaaaarrrr****
  1104.      ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss.... TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn mmmmaaaayyyy bbbbeeee iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh ccccoooonnnnsssstttt
  1105.      cccchhhhaaaarrrr**** MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  1106.  
  1107.               ostream&
  1108.           ooooppppeeeerrrraaaattttoooorrrr<<<<<<<<(ostream& s, const RWCString&);
  1109.  
  1110.  
  1111.      Output an RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg on ostream ssss.
  1112.  
  1113.               istream&
  1114.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(istream& s, RWCString& str);
  1115.  
  1116.  
  1117.  
  1118.  
  1119.                                                                        PPPPaaaaggggeeee 11117777
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126. RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))                                                RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg((((3333CCCC++++++++))))
  1127.  
  1128.  
  1129.  
  1130.      Calls ssssttttrrrr....rrrreeeeaaaaddddTTTTooookkkkeeeennnn((((ssss)))).  That is, a token is read from the input stream
  1131.      ssss. Thhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  1132.  
  1133.               RWvostream&
  1134.           ooooppppeeeerrrraaaattttoooorrrr<<<<<<<<(RWvostream&, const RWCString& str);
  1135.           RWFile&
  1136.           ooooppppeeeerrrraaaattttoooorrrr<<<<<<<<(RWFile&,     const RWCString& str);
  1137.  
  1138.  
  1139.      Saves string ssssttttrrrr to a virtual stream or RRRRWWWWFFFFiiiilllleeee, respectively.
  1140.  
  1141.               RWvistream&
  1142.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWvistream&, RWCString& str);
  1143.           RWFile&
  1144.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWFile&,     RWCString& str);
  1145.  
  1146.  
  1147.      Restores a string into ssssttttrrrr from a virtual stream or RRRRWWWWFFFFiiiilllleeee, respectively,
  1148.      replacing the previous contents of ssssttttrrrr.
  1149.  
  1150. RRRReeeellllaaaatttteeeedddd GGGGlllloooobbbbaaaallll FFFFuuuunnnnccccttttiiiioooonnnnssss
  1151.               RWCString
  1152.           ssssttttrrrrXXXXFFFFoooorrrrmmmm(const RWCString&);
  1153.  
  1154.  
  1155.      Returns the result of applying ::::::::ssssttttrrrrxxxxffffrrrrmmmm(((()))) to the argument string, to
  1156.      allow quicker collation than RRRRWWWWCCCCSSSSttttrrrriiiinnnngggg::::::::ccccoooollllllllaaaatttteeee(((())))....  Provided only on
  1157.      platforms that provide ::::::::ssssttttrrrrxxxxffffrrrrmmmm(((()))).  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh
  1158.      ssssttttrrrriiiinnnnggggssss wwwwiiiitttthhhh eeeemmmmbbbbeeeeddddddddeeeedddd nnnnuuuullllllllssss....
  1159.  
  1160.               RWCString
  1161.           ttttooooLLLLoooowwwweeeerrrr(const RWCString& str);
  1162.  
  1163.  
  1164.      Returns a version of ssssttttrrrr where all upper-case characters have been
  1165.      replaced with lower-case characters.  Uses the standard C library
  1166.      function ttttoooolllloooowwwweeeerrrr(((()))).  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  1167.  
  1168.               RWCString
  1169.           ttttooooUUUUppppppppeeeerrrr(const RWCString& str);
  1170.  
  1171.  
  1172.      Returns a version of ssssttttrrrr where all lower-case characters have been
  1173.      replaced with upper-case characters.  Uses the standard C library
  1174.      function ttttoooouuuuppppppppeeeerrrr(((()))).  TTTThhhhiiiissss ffffuuuunnnnccccttttiiiioooonnnn iiiissss iiiinnnnccccoooommmmppppaaaattttiiiibbbblllleeee wwwwiiiitttthhhh MMMMBBBBCCCCSSSS ssssttttrrrriiiinnnnggggssss....
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.                                                                        PPPPaaaaggggeeee 11118888
  1186.  
  1187.  
  1188.  
  1189.